package timeUtil

import "time"

// 找到该时间最接近的年
func ConvertToClosestYearTimestamp(microsec int64) (yearStart, yearEnd int64) {
	// 将微秒时间戳转换为秒时间戳
	seconds := microsec / 1000000
	// 获取当前时间
	t := time.Unix(seconds, 0)
	// 最接近的年份时间戳
	yearStart = time.Date(t.Year(), 0, 1, 0, 0, 0, 0, time.UTC).Unix()
	yearEnd = time.Date(t.Year()+1, 0, 1, 0, 0, 0, 0, time.UTC).Unix()
	return
}

// 找到该时间最接近的月
func ConvertToClosestMonthTimestamp(microsec int64) (monthStart, monthEnd int64) {
	// 将微秒时间戳转换为秒时间戳
	seconds := microsec / 1000000
	// 获取当前时间
	t := time.Unix(seconds, 0)
	// 最接近的月份时间戳
	monthStart = time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, time.UTC).Unix()
	// 最接近的下一个月时间戳
	monthEnd = time.Date(t.Year(), t.Month()+1, 1, 0, 0, 0, 0, time.UTC).Unix()
	return
}

// 找到该时间最接近的天
func ConvertToClosestDayTimestamp(microsec int64) (dayStart, dayEnd int64) {
	// 将微秒时间戳转换为秒时间戳
	seconds := microsec / 1000000
	// 获取当前时间
	t := time.Unix(seconds, 0)
	dayStart = time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.UTC).Unix()
	// 最接近的下一个天时间戳
	dayEnd = time.Date(t.Year(), t.Month(), t.Day()+1, 0, 0, 0, 0, time.UTC).Unix()
	return
}

// 找到该时间最接近的小时
func ConvertToClosestHourTimestamp(microsec int64) (hourStart, hourEnd int64) {
	// 将微秒时间戳转换为秒时间戳
	seconds := microsec / 1000000
	// 获取当前时间
	t := time.Unix(seconds, 0)
	// 最接近的小时时间戳
	hourStart = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), 0, 0, 0, time.UTC).Unix()
	// 最接近的下一个小时时间戳
	hourEnd = time.Date(t.Year(), t.Month(), t.Day(), t.Hour()+1, 0, 0, 0, time.UTC).Unix()
	return
}
